package com.ruiben.mall.vo;

import java.util.ArrayList;
import java.util.List;

public class ProductTypeVo implements  Comparable<ProductTypeVo>{

    private String id;

    /**
     * 类型名称
     */
    private String typename;

    /**
     * 上级id
     */
    private String parentId;

    /**
     * 是否禁用（1：未禁用；0：禁用）
     */
    private Short state;

    /**
     * 排序
     */
    private Integer sort;

    public Short getState() {
        return state;
    }

    public void setState(Short state) {
        this.state = state;
    }

    public Integer getSort() {
        return sort;
    }

    public void setSort(Integer sort) {
        this.sort = sort;
    }

    private List<ProductTypeVo> children = new ArrayList<ProductTypeVo>();

    /**
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取类型名称
     *
     * @return name - 类型名称
     */
    public String getTypename() {
        return typename;
    }

    /**
     * 设置类型名称
     *
     * @param name 类型名称
     */
    public void setTypename(String name) {
        this.typename = name;
    }

    /**
     * 获取上级id
     *
     * @return parent_id - 上级id
     */
    public String getParentId() {
        return parentId;
    }

    /**
     * 设置上级id
     *
     * @param parentId 上级id
     */
    public void setParentId(String parentId) {
        this.parentId = parentId;
    }


    public List<ProductTypeVo> getChildren() {
        return children;
    }

    public void setChildren(List<ProductTypeVo> children) {
        this.children = children;
    }

    @Override
    public int compareTo(ProductTypeVo o) {
        if(this ==o){
            return 0;
        }
        else if (o!=null && o instanceof ProductTypeVo) {
            ProductTypeVo u = (ProductTypeVo) o;
            if(sort<=u.getSort()){
                return -1;
            }else{
                return 1;
            }
        }else{
            return -1;
        }
    }


    public void add(ProductTypeVo node) {//递归添加节点
        if ("0".equals(node.getParentId())) {
            this.children.add(node);
        } else if (node.getParentId().equals(this.id)) {
            this.children.add(node);
        } else {
            for (ProductTypeVo tmp_node : children) {
                tmp_node.add(node);
            }
        }
    }

}